package com.常用类.String;


/**
 * 作    者 ：吾路巴尼
 * 创建时间 ：2025/2/23-20:32
 */
public class String知识点 {
    public static void main(String[] args) {
         /**
         * String类
         * 1.String对象用于保存字符串。也就是一组字符序列；*/
         /**2.str是变量引用，而"hello"是字符串常量*/
         String str = "hello";
         /**3.字符串的字符使用的是unicode编码，一个字符占两个字节*/
         /**4.String类有很多构造器，常用的有： * */
         String str1 = new String();//String str1 = new String();
         String str2 = new String("hello");//String str2 = new String(String s);
         String str3 = new String(new char[]{'h','e','l','l','o'});//String str3 = new String(char[] value);
        /**5.String类 实现了java.io.Serializable, Comparable<String>, CharSequence,
         * 其中Serializable 接口表示可以串行化，即可以在网络传输；
         * Comparable<String>表示可以比较，CharSequence表示可以序列化，
         */

        /**6.字符串实际上是一个字符数组，看源码：
         * public final class String
         * implements java.io.Serializable, Comparable<String>, CharSequence,Constable, ConstantDesc {
         private final byte[] value;  // 存储字符串的字符数组；final 表示该数组指向的地址不可变，但内容可变；
         }

         6.1 String类是final 的，所以String类不能被继承；
         6.2 String类中 value字符数组是final 的，表示该数组指向的地址不可变，但内容可变；
         例如： * */
        final char[] value = {'h','e','l','l','o'};
        char[] ch = {'h','e','l','l','o'};
        value[0] = value[1] =  'H';//可以修改，因为数组的内容可以修改
//        value = ch;//final的指向地址不能修改，无法将值赋给 final 变量 'value'




    }
}
